package main

//类型断言

//type Inter4211 interface {
//	Ping()
//	Pang()
//}
//
//type Anter4211 interface {
//	Inter4211
//	String()
//}
//
//type St4211 struct {
//	Name string
//}
//
//func (St4211) Ping() {
//	fmt.Println("ping")
//}
//
//func (*St4211) Pang() {
//	fmt.Println("pang")
//}
//
//func main() {
//	st := &St4211{Name: "andes"}
//
//	var i interface{} = st
//
//	//判断 i 绑定的实列是否实现了接口 Inter4211
//	/*
//	o := i.(Inter4211)
//	o.Ping()
//	o.Pang()
//	 */
//
//	if o, ok := i.(Inter4211); ok {
//		o.Ping()
//		o.Pang()
//		//fmt.Println(ok)	true
//	}
//
//	//以下语句会引发 panic，因为 i 灭有实现接口 Anter4211
//	/*
//	p := i.(Anter4211)			//	error
//	p.Ping()
//	p.String()
//	 */
//
//	if p, ok := i.(Anter4211); ok {
//		p.String()
//	}
//
//	//判断 i 绑定的实列是否就是具体类型 St
//	/*
//	s := i.(*St4211)
//	fmt.Println(s.Name)
//	 */
//
//	if s, ok := i.(*St4211); ok {
//		fmt.Println(s.Name)
//	}
//}
